﻿// 3598. 二叉树遍历.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>

using namespace std;
/*
https://www.acwing.com/problem/content/3601/

假定一棵二叉树的每个结点都用一个大写字母描述。

给定这棵二叉树的前序遍历和中序遍历，求其后序遍历。

输入格式
输入包含多组测试数据。

每组数据占两行，每行包含一个大写字母构成的字符串，第一行表示二叉树的前序遍历，
第二行表示二叉树的中序遍历。

输出格式
每组数据输出一行，一个字符串，表示二叉树的后序遍历。

数据范围
输入字符串的长度均不超过 26。

输入样例：
ABC
BAC
FDXEAG
XDEFAG
输出样例：
BCA
XEDGAF
*/

string pre, mid;
string ans;

void dfs(const string& pre, int pl, int pr, const string& mid, int ml, int mr) {
	char root = pre[pl];

	if (pl == pr) {
		ans.push_back(root);
		return;
	}
	else if (pl > pr|| ml>mr) {
		return;
	}

	int i = ml;
	for (i = ml; i <= mr; i++) {
		if (mid[i] == root) {break;}
	}

	int leftLen = i - ml ;
	dfs(pre, pl + 1, pl + leftLen, mid, ml, i - 1);
	dfs(pre, pl + leftLen+1,pr,mid,i+1,mr);
	
	ans.push_back(root);

	return;
}

void solve() {
	ans.clear();
	dfs(pre,0,pre.size()-1,mid,0,mid.size()-1);

	cout << ans << endl;

	return;
}

int main()
{
	while (cin >> pre >> mid) {
		solve();
	}

	return 0;
}
 